// 工厂模式是我们最常用的实例化对象模式了，是用工厂方法代替new操作的一种模式。
// 因为工厂模式就相当于创建实例对象的new，我们经常要根据类Class生成实例对象，
// 如A a=new A() 工厂模式也是用来创建实例对象的，所以以后new时就要多个心眼，
// 是否可以考虑使用工厂模式，虽然这样做，可能多做一些工作，但会给你系统带来更大的可扩展性和尽量少的修改量。
function Animal(opts) {
  var obj = new Object()
  obj.color = opts.color
  obj.name = opts.name
  obj.getInfo = function () {
    console.log('名称：' + obj.name + '， 颜色：' + obj.color)
  }
  return obj
}
var cat = Animal({ name: '波斯猫', color: '白色' })
cat.getInfo()
// 借助静态对象
// class Person {
//   constructor(name) {
//     this.name = name
//   }
//   getName() {
//     console.log(this.name)
//   }
// }
// class Factory {
//   static create(name) {
//     return new Person(name)
//   }
// }
// Factory.create('alanwu').getName() //alanwu
class Person {
  constructor(name) {
    this.name = name
  }
  // getname是一个实例方法
  getName() {
    console.log(this.name)
  }
}
class Factory {
  static create(name) {
    return new Person(name)
  }
}
Factory.create('groot').getName()
